package com.czmh.etc.onlinepubsys.request.cmg;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.czmh.etc.common.core.utils.Sequence;
import com.czmh.etc.onlinepubsys.entity.mingchuang.CarInfo;
import com.czmh.etc.onlinepubsys.request.mingchuang.ApplyExtInfo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * Copyright (C), 2023
 *
 * @Author lyk
 * Date: 2023/07/05
 * FileName: NewAddVehicleRequest
 * Description:
 */
@ApiModel("招商局-预录入车辆信息接口-对接请求对象")
@Data
public class NewAddVehicleRequest {
    private static final long serialVersionUID = 1L;

    @ApiModelProperty("用户ID")
    @JSONField(serialize = false)
    private String userId; //用户ID

    @ApiModelProperty("订单id")
    @JSONField(serialize = false)
    private String orderId; //订单id

    @ApiModelProperty(notes = "业务流水号,SPI合作服务商定义业务流水号,规则:渠道号+渠道方唯一编码", required = true)
    private String businessFlowNo;

    @ApiModelProperty(notes = "时间戳", hidden = true)
    private Long time;

    @ApiModelProperty(notes = "授权访问平台终端渠道编号,招商畅行卡微信小程序:5713498500")
    private String toAuthAccessNo;

    @ApiModelProperty(notes = "跳转招商平台客户端id，获取招商公众服务平台访问令牌接口中获取")
    private String toClientKey;

    @ApiModelProperty(notes = "车牌号码")
    private String vehiclePlate;

    @ApiModelProperty(notes = "车牌颜色,0蓝色、1黄色、2黑色、3白色4、渐变绿色5、黄绿双拼色 6、蓝白渐变色")
    private Integer vehiclePlateColor;

    @ApiModelProperty(notes = "轴型")
    private String axisType;

    @ApiModelProperty(notes = "车类型,行驶证上的车辆类型")
    private String carType;

    @ApiModelProperty(notes = "用户类型0–普通车 24-单用途集装箱车 26-专用号牌车 27-牵引车28-多用途集装箱车， 24、27、28为货车／专项作业车专用26为专项作业车专用")
    private Integer cardUserType;

    @ApiModelProperty(notes = "档案编号")
    private String fileNum;

    @ApiModelProperty(notes = "是否允许用户在招商平台应用修改vehiclePlate、vehiclePlateColor,0-不允许 1-允许,设置不允许时，招商平台应用此次业务流程将限制用户修改, 默认允许修改,示例值(1)")
    private Integer isLimitModifyKey;

    @ApiModelProperty(notes = "是否开户人所属车辆,0-否 1-是")
    private Integer isOwner;

    @ApiModelProperty(notes = "是否临时车牌,0-否 1-是，为空默认0")
    private Integer isTemporaryPlate;

    @ApiModelProperty(notes = "发证日期格式：yyyy-MM-dd")
    private String issueDate;

    @ApiModelProperty(notes = "经营许可证号,当车辆用户类型为24、28时必填")
    private String licenseIdNum;

    @ApiModelProperty(notes = "整备质量,单位：千克，取值0-16777215")
    private Integer maintenanceMass;

    @ApiModelProperty(notes = "车主证件号码，当是否开户人所属车辆为0时必填")
    private String ownerIdNum;

    @ApiModelProperty(notes = "车主证件类型，当是否开户人所属车辆为0时必填 0-身份证； 1-军官证；2-护照；3-港澳居民来往内地通行证；4-台湾居民来往大陆通行证 5-营业执照；6-组织机构代码证；7-社会团体法人登记证书 8-统一社会信用代码 9-事业单位法人证书 10-律师事务所执业许可证")
    private Integer ownerIdType;

    @ApiModelProperty(notes = "车主姓名，当是否开户人所属车辆为0时必填")
    private String ownerName;

    @ApiModelProperty(notes = "车主联系电话，当是否开户人所属车辆为0时必填")
    private String ownerPhone;

    @ApiModelProperty(notes = "准牵引总质量,单位：千克，取值0-16777215")
    private Integer permittedTowWeight;

    @ApiModelProperty(notes = "核定载重量,当车辆类别为2、3时必填,单位：千克, 取值1-16777215")
    private Integer permittedWeight;

    @ApiModelProperty(notes = "行驶证正页图片,图片使用Base64编码字符串，大小不超过300k（不包含图片头，如data:image/jpg;base64,）")
    private String picData;

    @ApiModelProperty(notes = "机动车登记证图片,图片使用Base64编码字符串，大小不超过300k（不包含图片头，如data:image/jpg;base64,）")
    private String picData2;

    @ApiModelProperty(notes = "道路运输证图片,图片使用Base64编码字符串，大小不超过300k（不包含图片头，如data:image/jpg;base64,）")
    private String picData3;

    @ApiModelProperty(notes = "行驶证副页图片,图片使用Base64编码字符串，大小不超过300k（不包含图片头，如data:image/jpg;base64,）")
    private String picData4;

    @ApiModelProperty(notes = "车主证件图片正面,图片使用Base64编码字符串，大小不超过300k（不包含图片头，如data:image/jpg;base64,）")
    private String picData5;

    @ApiModelProperty(notes = "车主证件图片反面,图片使用Base64编码字符串，大小不超过300k（不包含图片头，如data:image/jpg;base64,）")
    private String picData6;

    @ApiModelProperty(notes = "防爆膜")
    private Integer protectFilm;

    @ApiModelProperty(notes = "注册日期格式：yyyy-MM-dd")
    private String registerDate;

    @ApiModelProperty(notes = "检验记录")
    private String testRecord;

    @ApiModelProperty(notes = "总质量,单位：千克，取值1-16777215")
    private Integer totalMass;

    @ApiModelProperty(notes = "道路运输证号")
    private String transportNo;

    @ApiModelProperty(notes = "使用性质0非营运、1营运、8-应急救援")
    private Integer userType;

    @ApiModelProperty(notes = "轴数,单位：个，取值2-6")
    private Integer vehicleAxles;

    @ApiModelProperty(notes = "车辆发动机号")
    private String vehicleEngineNumber;

    @ApiModelProperty(notes = "车高,单位：毫米，取值0-25500")
    private Integer vehicleHeight;

    @ApiModelProperty(notes = "车长,单位：毫米，取值0-6553500")
    private Integer vehicleLong;

    @ApiModelProperty(notes = "车辆品牌型号")
    private String vehicleSpecificInformation;

    @ApiModelProperty(notes = "客货类型：1客车，2货车、3专项作业车")
    private Integer vehicleType;

    @ApiModelProperty(notes = "核定载重量/座位数,单位：千克（货车／专项作业车）/座（客车），取值1-16777215/1-99")
    private Integer vehicleWeightLimits;

    @ApiModelProperty(notes = "轴距,单位：分米，取值0-65535")
    private Integer vehicleWheelBases;

    @ApiModelProperty(notes = "轮数,单位：个，取值0-255")
    private Integer vehicleWheels;

    @ApiModelProperty(notes = "车宽,单位：毫米，取值0-25500")
    private Integer vehicleWidth;

    @ApiModelProperty(notes = "车辆识别代号")
    private String vin;

    private String clientNo; //网点编号

    private String fundAccountId; //资金账户id

    @ApiModelProperty("行驶证正面照")
    private String vehCertFrontImg; //行驶证正面照

    @ApiModelProperty("行驶证反面照")
    private String vehCertBackImg; //行驶证反面照

    private CarInfo vehicle; //车辆信息

    @TableField("附加信息请求参数")
    private ApplyExtInfo applyExtInfo;//用于存放额外的信息，例如阿里云图片
}
